//储存缓存
/**
 * 将指定键值对存储到 localStorage
 * 如果值是字符串，直接存储；否则使用 JSON.stringify 序列化
 * @param keyName 存储的键名
 * @param value 存储的值，可以是任意类型
 * @returns boolean 表示是否存储成功
 */
export const setItem = (keyName: string, value: any): void => {
  if (!keyName) throw new Error('keyName 不能为空');
  if (!value) throw new Error('value 不能为空');
  try {
    const valueToStore = typeof value === 'string' ? value : JSON.stringify(value);
    localStorage.setItem(keyName, valueToStore);
  } catch (error) {
    console.error(`保存数据到 localStorage 失败: key="${keyName}"`, error);
  }
};
//获取缓存
export const getItem = (keyName: string): any => {
  if (!keyName) throw new Error('keyName 不能为空');
  try {
    const storedValue = localStorage.getItem(keyName);
    if (storedValue === null) return ''; // 保持与你原逻辑一致：返回空字符串
    return needsJSONParse(storedValue) ? JSON.parse(storedValue) : storedValue;
  } catch (error) {
    console.error(`读取数据失败: key="${keyName}"`, error);
    return '';
  }
};
//清除缓存
export const removeItem = (keyName: string): void => {
  localStorage.removeItem(keyName);
};
//判断是否符合JSONParse
export const needsJSONParse = (data: any) => {
  if (typeof data === 'string') {
    try {
      // 尝试解析 JSON 字符串
      const parsedData = JSON.parse(data);
      return true;
    } catch (e) {
      // 如果解析失败，说明这不是一个有效的 JSON 字符串
      return false;
    }
  }
  // 如果数据不是字符串，则不需要解析
  return false;
};
